# 创建一个类
class MyClass:
    pass


c1 = MyClass()
print(c1)


# 包含属性和方法的类
# 类方法的第一个参数必须是 self , 调用函数的时候这个参数可以不传, 代表调用者本身
class MyClass2:
    name = 'sail'

    def say(self):
        print(self.name)


c2 = MyClass2()
c2.name = 'cy'
c2.say()

# 类的继承
# 创建一个叫做Vehicle的类，表示某种车，
# 它包含了汽车和自行车所共有的东西：速度，行驶的方法。
# 然后让Car类和Bike类都继承这个Vehicle类

class Vehicle:
    def __init__(self, speed):
        self.speed = speed

    def drive(self, distance):
        print('need %f hour(s)' % (distance / self.speed))


# 类名(父类) 表示继承
class Bike(Vehicle):
    pass

# __init__ 函数会在类被创建的时候自动调用, 参数需要传进去
class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)
        self.fuel = fuel

    # 通过类名来调用方法, 必须提供self
    def drive(self, distance):
        Vehicle.drive(self, distance)
        print('need %f fuel' % (distance * self.fuel))


b = Bike(15.0)
c = Car(80.0, 0.012)
b.drive(100.0)
c.drive(100.0)

